home *** CD-ROM | disk | FTP | other *** search
/ Night Owl 6 / Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso / 031a / adg_4_6.zip / SB-DLL.C < prev    next >
C/C++ Source or Header  |  1991-02-21  |  2KB  |  76 lines

  1. /****************************************************************************
  2. Module name: SB-DLL.C
  3. Programmer : Jeffrey M. Richter.
  4. *****************************************************************************/
  5.  
  6. #include "..\nowindws.h"
  7. #undef NOHELP
  8. #undef NOKERNEL
  9. #undef NOMEMMGR
  10. #undef NOUSER
  11. #undef NOWH
  12. #include <windows.h>
  13.  
  14. #include "SB-DLL.h"
  15.  
  16. static HANDLE _hInstance = NULL; // Our instance handle
  17.  
  18. static FARPROC  _fnNextJrnlRcrdHookFunc = NULL;
  19. static DWORD    _dwLastEventTime = 0;
  20.  
  21. DWORD FAR PASCAL JrnlRcrdHookFunc (int nCode, WORD wParam, LPEVENTMSGMSG lpEventMsg);
  22.  
  23. BOOL FAR PASCAL LibMain (HANDLE hModule, WORD wDataSeg, WORD cbHeapSize, LPSTR lpCmdLine) {
  24.    _hInstance = hModule;
  25.    if (cbHeapSize != 0) UnlockData(0); // Let data segment move
  26.    return(TRUE);  // return TRUE if initialization is successful
  27. }
  28.  
  29. int FAR PASCAL WEP (int nSystemExit) {
  30.    switch (nSystemExit) {
  31.       case WEP_SYSTEM_EXIT:   // System is shutting down.
  32.          break;
  33.       case WEP_FREE_DLL:      // Usage count is zero (0)
  34.          break;
  35.    }
  36.    return(1);                 // WEP function successful.
  37. }
  38.  
  39. void FAR PASCAL InstallJrnlHook (BOOL fInstall) {
  40.    if (fInstall) {
  41.       _fnNextJrnlRcrdHookFunc =
  42.          SetWindowsHook(WH_JOURNALRECORD, (FARPROC) JrnlRcrdHookFunc);
  43.       _dwLastEventTime = GetTickCount();
  44.    } else {
  45.       UnhookWindowsHook(WH_JOURNALRECORD, (FARPROC) JrnlRcrdHookFunc);
  46.       _fnNextJrnlRcrdHookFunc = NULL;
  47.       _dwLastEventTime = NULL;
  48.    }
  49. }
  50.  
  51. DWORD FAR PASCAL GetLastEventTime (void) { return(_dwLastEventTime); }
  52.  
  53. DWORD FAR PASCAL JrnlRcrdHookFunc (int nCode, WORD wParam, LPEVENTMSGMSG lpEventMsg) {
  54.    BOOL fCallDefProc = FALSE;
  55.    DWORD dwResult = 0;
  56.    switch (nCode) {
  57.  
  58.       case HC_ACTION:
  59.          _dwLastEventTime = lpEventMsg->time;
  60.          fCallDefProc = TRUE;
  61.          break;
  62.  
  63.       case HC_SYSMODALON:
  64.       case HC_SYSMODALOFF:
  65.       default:
  66.          fCallDefProc = TRUE;
  67.          break;
  68.    }
  69.  
  70.    if ((nCode < 0) || (fCallDefProc && (_fnNextJrnlRcrdHookFunc != NULL)))
  71.       dwResult = DefHookProc(nCode, wParam, (LONG) lpEventMsg,
  72.                      &_fnNextJrnlRcrdHookFunc);
  73.  
  74.    return(dwResult);
  75. }
  76.